struct Data {
    int x, y;
    char a[10];
} data;

int foo(struct Data *p)
{
    int n;
    n = data.y;
    n = data.a[n];
    n = (&data)->y;
    n = p->x;
    n = (*p).x;
    n = p[n].y;
}